import Collection from "../core/Collection";
import Obj from "../core/Obj";

/**
 * 不包含重复元素的集合。
 *
 * 注意：如果将可变对象用作集合元素，则必须非常小心。如果对象的某些属性在发生变更后导致{@link Obj#equalsTo}的结果产生了变化，Set将无法对其变换
 * 进行感知，因此仍存在一定的情况导致出现重复元素（即在传入不同的元素后将元素的属性进行修改导致元素出现相等的情况）。
 *
 * 由于ES6中已存在一个内置的Set，且两者存在出入。所以当使用此集合类时，请手动导入此类以正常使用！
 *
 * @param E 存储在此集合中的元素类型
 * @see Collection
 * @version 1.0
 */
export default interface Set<E> extends Obj, Collection<E> {
}
